/**
 *  (c)
 * <p>
 *
 * <p>
 *
 */

package com.nn.smart.bus.commons.tools.redis;

/**
 * @author nanning
 * @since 1.0.0
 */
public class RedisKeys {

    /**
     * 前缀
     */
    private static String rootPrefix = "smart:";

    /**
     * 系统参数Key
     */
    public static String getSysParamsKey() {
        return rootPrefix.concat("sys:params");
    }

    /**
     * 登录验证码Key
     */
    public static String getLoginCaptchaKey(String uuid) {
        return rootPrefix.concat("sys:captcha:").concat(uuid);
    }

    /**
     * 登录用户Key
     */
    public static String getSecurityUserKey(Long id) {
        return rootPrefix.concat("sys:security:user:").concat(String.valueOf(id));
    }

    /**
     * 系统日志Key
     */
    public static String getSysLogKey() {
        return rootPrefix.concat("sys:log");
    }

    /**
     * 系统资源Key
     */
    public static String getSysResourceKey() {
        return rootPrefix.concat("sys:resource");
    }

    /**
     * 用户菜单导航Key
     */
    public static String getUserMenuNavKey(Long userId, String language) {
        return rootPrefix.concat("sys:user:nav:").concat(String.valueOf(userId)).concat("_").concat(language);
    }

    /**
     * 用户菜单导航Key
     */
    public static String getUserMenuNavKey(Long userId) {
        return rootPrefix.concat("sys:user:nav:").concat(String.valueOf(userId)).concat("_*");
    }

    /**
     * 用户权限标识Key
     */
    public static String getUserPermissionsKey(Long userId) {
        return rootPrefix.concat("sys:user:permissions:").concat(String.valueOf(userId));
    }

    /**
     * 获取简要区划信息key
     *
     * @param areaId 行政区划ID
     * @return java.lang.String
     * @author nanning
     * @date 2019/9/3 16:28
     */
    public static String getSimpleAreaKey(String areaId) {
        return rootPrefix.concat("config:simple:area:").concat(areaId);
    }

    /**
     * 获取简要数据字典key
     *
     * @param dictType 数据字典类型
     * @return java.lang.String
     * @author nanning
     * @date 2019/9/3 16:28
     */
    public static String getSimpleDictKey(String dictType) {
        return rootPrefix.concat("config:simple:dict:").concat(dictType);
    }

    /**
     * 管理员部门层级关系
     *
     * @param userId 用户id
     * @return java.lang.String
     * @author nanning
     * @date 2019/11/28 09:56
     */
    public static String getAdminUserDeptOptionKey(Long userId) {
        return rootPrefix.concat("options:dept:user:").concat(String.valueOf(userId));
    }
    /**
     * 部门层级关系
     *
     * @param userId 用户id
     * @return java.lang.String
     * @author nanning
     * @date 2019/11/28 09:56
     */
    public static String getWorkLogUserDeptOptionKey(Long userId) {
        return rootPrefix.concat("options:dept:workloguser:").concat(String.valueOf(userId));
    }

    /**
     * 管理员完整部门层级关系
     *
     * @param userId 用户id
     * @return java.lang.String
     * @author nanning
     * @date 2019/11/28 09:56
     */
    public static String getAllAdminUserDeptOptionKey(Long userId) {
        return rootPrefix.concat("options:dept:user:all:").concat(String.valueOf(userId));
    }

    /***
     * 部门所有层级关系
     * @param
     * @return java.lang.String
     * @author nanning
     * @date 2019/12/13 15:03
     */
    public static String getAllDeptOptionKey() {
        return rootPrefix.concat("options:dept:all:");
    }

    /**
     * @param
     * @return java.lang.String
     * @author nanning
     * @Description 部门所有层级关系
     * @Date 2020/1/31 11:39
     **/
    public static String getAllDeptOptionKeyForEpiDemic() {
        return rootPrefix.concat("options:dept:epidemic:all:");
    }

    /**
     * 获取详细数据字典key
     *
     * @param dictType 数据字典类型
     * @return java.lang.String
     * @author nanning
     * @date 2019/9/3 16:28
     */
    public static String getFullDictKey(String dictType) {
        return rootPrefix.concat("config:full:dict:").concat(dictType);
    }
}
